<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>原型对象</title>
</head>
<body>
    <h1>原型对象</h1>

    <script>
        

        function Dog(name,age) {
            this.name = name ;
            this.age = age ;
        }

        var xb = new Dog('小白',8) ;
        var xh = new Dog('小花',6) ;

        console.log(xb);
        console.log(xh);

        // xb 与 xh 的原型对象是一样的 - Dog构造函数
        console.log( xb.prototype == xh.prototype )

        // 把 eat 方法 ，绑定到 prototype 原型对象中，
        // 实现多个对象共享方法
        Dog.prototype.eat = function() {
            console.log('吃');
        }

        // 共享属性
        Dog.prototype.changDi = '中国制造'

        

        // 访问属性和方法原理：
        // 1.先从本构造函数读取属性和方法
        // 2.存在，则正常访问；不存在则向原型对象中读取 
        // 3.原型对象存在，则正常访问；不存在则向原型对象的原型对象去查找，以此类推，一直到 Object 对象
        // 4.一直到 Object 对象，如果都不存在，则返回 undefined

        console.log(xb.name);
        console.log(xb.changDi);
        console.log(xb.score);
        
        


    </script>
</body>
</html>